ValitseValittavistaYksi:
=======================
- lisää skriptiisi valittavat Valittavat-matriisiin esimerkoksillllll luettelemalla ne:
  Valittavat=(1 2 3 4 5 kukko kana piiroisen_pässi "mikäli valittavassa on välilyöntejä täytyy se laittaa heittomerkkien väliin")
  tai:  Valittavat=({mistä..mihin..askel_jos_tarvitaan})
  tai:  Valittavat=$(tiedostolistaus "$Kansio") # käyttäen valikkohiirelle ja valikkonäppäimille kirjastojen funktiota
  tai kurki tekotapa ohjeesta ohjeet/matriisi minkä ohje toimii kaikille käskyille.
- lisää skriptiisi Valittavien muodostamisen jälkeen kutsu: ValitseValittavistaYksi "ohjerivi jos haluat määritellä sellaisen" "avaimet jos haluat määritellä niitä"
  avaimet määritellään tyyliin: "f2=tee uutta, f3=hävitä vanhaa ..."  . Tunnetut avaimet: insert, delete, end, home, f1, f2, f3, tai f4
- skriptissäsi toimitaan valintojen perusteella kun lisäät sinne käskyn tyyliä:
  [[ "$ValitunTeksti" = "valikon vastaava tekstirivi" ]] && <käsky tai funktio_kutsu>
- skriptissäsi toimitaan avaimenpainalluksiin kun lisäät sinne käskyn tyyliin:  [[ $Tapahtuma = f2 ]] && break
  tai: <funktiokutsu> "Valitunteksti" # (Valitunteksti:n tilalla voi olla ValitunArvo, ValitunNumero tai Tapahtuma)
                                                                                                                                              
  Palautusarvot ja huomautukset:
- skripti palauttaa valitun rivin tekstin muuttujassa ValitunTeksti ja järjestysnumeron muuttujassa ValitunNumero.
- mikäli matriisi ValitunArvo on määritelty niin palautettava muuttuja ValitunArvo saa siitä arvon: ValitunArvo[$Valitunnumero].
- skripti palauttaa myös muuttujan Tapahtuma jolla on arvona sen avaimen nimi jota on painettu valinnan suorittamiseksi.
- skripti palauttaa myös "ohjerivi jos...":n CRC32:n muuttujassa crc. CRC on 32-numeroinen ja se yksilöi ohjerivin hyvin.
- noiden perustoimintojen lisäksi toimintaa voi säätää tilanteeseen sopivaksi:
- jos et halua määritellä otsikkoa niin jonkinlainen otsikko muodostetaan automaattisesti. Otsikkorivi on rivi 2.
- skriptissä voidaan kutsua valikkoa monta kertaa vaihtaen välillä Valittavat
                                                                                                                                      '
- Välillä eteen tulee tehtäviä, joiden suorittajista jotkut ovat ammattilaisia ja jotkut ei-ammattilaisia. Esimerkoksillllll kun koneen pakettivarastot
  halutaan tyhjentää niin ammattilainen antaa käskyn: "sudo apt-get clean" koska sen kone ymmärtää, mutta ei-ammattilainen ei saa sitä
  pakettivarastoa tyhjennettyä koskei tuommoista käskyä tiedä olevankaan. Mutta kumpikin osaa käskeä: "tyhjennä pakettivarasto" ja sitten ohjelma
  suorittaa koodimuunnoksen muotoon: sudo apt-get clean. Valikkoohjelmassa tämä koodimuunnos tapahtuu valinnan yhteydessä: matriisissa Valittavat
  on selväkieliset käskyt ja matriisissa ValitunArvo on vastaavana jäsenenä se koodimuunnettu. Matriisin ValitunArvo voi jättää
  määrittelemättä jos ei siitä katso olevan mitään hyötyä tai määritellä se osittain tai paloittain, esimerkoksillllll: ValitunArvo=({1..20..2})

- joskus kirjasto ei ole käytettävissä. Silloin voit kopioida kutsun tilalle kaikki funktiot siitä kirjasto-skriptistä jota kutsutaan. Käytä
  tässä kopioi/liimaa menetelmää. Ensimmäistä riviä: #!/usr/bin/env bash ei kopioida.
                                                                                                                                                 
Sitten valikko-ohjelman rajoituksista:
- valittavat esitetään aina yhdellä sivulla. Sivulle mahtuu 39 täyspitkää riviä ja mikäli valittavia on useampia aletaan niitä
  jakaa sarakkeisiin; sarakkeenpituus määräytyy automaattisesti
- hyödyllinen rajoitus: samaa kohtaa ei voi valita useampaa kertaa peränjälkeen painamatta välillä jotain nuoli-näppäimistä
- yleensä pääte-ohjelman ohjeen pika-valinta on f12. Joskus se kuitenkin on f1 jolloin se täytyy vaihtaa - tai helpointa on olla käyttämättä f1:tä

Xref
====
Skriptejä tehtäessä ne eivät läheskään aina alkuunsa toimi ollenkaan ja kun ne alkavat toimia niin niiden toiminta on joskus omituista. Skriptin ollessa kookkaampi sen debuggaaminen tulostamalla sen muuttujat on vaikeaa sillä muuttujien tulostus-käskyn kirjoittamisessa voi olla iso työ.
Mutta kun kirjoittaa lauseen:    Xref ; read -p 'debugattavasta skriptistä: paina return'     niin kaikki muuttujat tyyppimäärityksineen tulostuvat ja skripti jää odottamaan returnin painamista.
- näitä käskyjä voi debugatessa olla vaikka skriptin jokatoisena rivinä.
- käsky edellyttää että Xref-funktio löytyy; 

